#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int N=1009;
int t[N][N];
int n;
int mem[N][N];
int dp[N][N];
int dfs(int x,int y)
{
	if(x>n||y>n)return 0;	
    else if(mem[x][y])return mem[x][y];
    else{
		mem[x][y]= max(dfs(x+1,y),dfs(x+1,y+1))+t[x][y];
		return mem[x][y];
	}
}
int main()
{
	
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=i;j++)
		{
			scanf("%d",&t[i][j]);
		}
	}
	for(int i=n;i>=1;i--)
	{
		for(int j=i;j>=1;j--)
		{
			dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+t[i][j];
		}
	}
	printf("%d\n",dp[1][1]);
	//printf("%d\n",dfs(1,1));
	return 0;
}
